package cn.hy.考试;


/**
 *
 * 给你一个整数数组 nums 和一个整数 k ，请你返回子数组内所有元素的乘积严格小于 k 的连续子数组的数目。
 *
 *
 * 示例 1：
 * 输入：nums = [10,5,2,6], k = 100
 * 输出：8
 * 解释：8 个乘积小于 100 的子数组分别为：[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。
 * 需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。
 *
 * 示例 2：
 * 输入：nums = [1,2,3], k = 0
 * 输出：0
 * 提示:
 * 1 <= nums.length <= 3 * 104
 * 1 <= nums[i] <= 1000
 * 0 <= k <= 106
 */
public class Test04 {
    public static void main(String[] args) {
        int [] arr = {10,5,2,6};
        int [] arr1 = {1,2,3};
        System.out.println(solve(arr, 100));
        System.out.println(solve(arr1, 0));
    }
    private static int solve(int[] arr, int k )  {
        if (k <= 0) {return  0;}
        if (arr== null || arr.length == 0 ) {return 0;}
        int i = 0, j = 0;
        int len = arr.length;
        int res = 0;
        while (i < len) {
            int sum = arr[i];
            res ++;
             j = i;
            while (j < len-1) {
                j++;
                sum = sum * arr[j];
                if (sum < k) {
                    res++;
                } else {
                    // sum = sum / arr[i]; 除掉这个数
                    break;
                }
            }
            i++;
        }
        return res;
    }
}
